//
// Created by heqian on 17-10-14.
//


#include "MainWindow.h"
#include <fstream>

using namespace std;
using namespace Gdk;

MainWindow::MainWindow() :
        mBox(),
        mText(),
        mButtonBox(),
        mButtonExit("退出"),
        mButtonSave("保存"),
        mButtonSaveAs("另存为"),
        mSavePath(),
        mIsChangde(false) {

    set_title("快速保存成SVG");
    set_position(WIN_POS_CENTER);
    set_resizable(false);
    set_default_icon(Pixbuf::create_from_xpm_data(getIcoData()));

    mBox.set_spacing(2);
    mBox.set_orientation(ORIENTATION_VERTICAL);
    add(mBox);

    mText.set_size_request(700, 500);
    mText.set_margin_left(8);
    mText.set_margin_top(8);
    mText.set_margin_right(8);
    mText.set_margin_bottom(8);
    mText.set_wrap_mode(WRAP_WORD);
    mBox.add(mText);

    mButtonBox.set_spacing(3);
    mButtonBox.set_orientation(ORIENTATION_HORIZONTAL);
    mButtonBox.set_layout(BUTTONBOX_SPREAD);
    mButtonBox.set_margin_bottom(8);
    mBox.add(mButtonBox);

    mText.get_buffer()->signal_changed().connect(sigc::mem_fun(this, &MainWindow::on_text_changed));

    mButtonSave.signal_clicked().connect(sigc::mem_fun(this, &MainWindow::on_save_clicked));
    mButtonBox.add(mButtonSave);

    mButtonSaveAs.signal_clicked().connect(sigc::mem_fun(this, &MainWindow::on_saveAs_clicked));
    mButtonBox.add(mButtonSaveAs);

    mButtonExit.signal_clicked().connect(sigc::mem_fun(this, &MainWindow::on_exit_clicked));
    mButtonBox.add(mButtonExit);

    show_all();
}

void MainWindow::on_exit_clicked() {
    close();
}

void MainWindow::on_saveAs_clicked() {
    FileChooserDialog dialog(*this, "保存文件", FILE_CHOOSER_ACTION_SAVE);
    dialog.add_button("取消", RESPONSE_CANCEL);
    dialog.add_button("保存", RESPONSE_ACCEPT);
    dialog.set_filename(mSavePath);

    Glib::RefPtr<FileFilter> filter = FileFilter::create();
    filter->add_pattern("*.svg");
    dialog.set_filter(filter);

    if (RESPONSE_ACCEPT != dialog.run())
        return;

    mSavePath = dialog.get_filename();
    if (0 != mSavePath.compare(mSavePath.length() - 4, 4, ".svg"))
        mSavePath.append(".svg");

    string name("快速保存成SVG");
    name.append("--").append(mSavePath);
    set_title(name.c_str());

    saveToFile();
}

void MainWindow::on_save_clicked() {
    if (0 == mSavePath.length())
        on_saveAs_clicked();

    saveToFile();
}

void MainWindow::saveToFile() {
    fstream fout;
    fout.open(mSavePath.c_str(), ios::out);

    fout << "<?xml version=\"1.0\" encoding=\"UTF-8\"?>" << endl;
    fout << mText.get_buffer()->get_text() << endl;

    fout.close();
    mIsChangde = false;
}

bool MainWindow::on_delete_event(GdkEventAny *any_event) {
    if (!mIsChangde)
        return Widget::on_delete_event(any_event);

    MessageDialog dialog(*this, "文档有修改，您是否需要存在？", false, MESSAGE_QUESTION, BUTTONS_NONE);
    dialog.add_button("保存", BUTTONS_OK);
    dialog.add_button("取消", BUTTONS_CANCEL);
    dialog.add_button("退出", BUTTONS_CLOSE);

    switch (dialog.run()) {
        case RESPONSE_DELETE_EVENT:
        case BUTTONS_CANCEL:
            return true;

        case BUTTONS_OK:
            on_save_clicked();

    }
    return Widget::on_delete_event(any_event);
}

void MainWindow::on_text_changed() {
    mIsChangde = true;
}


const char *const *MainWindow::getIcoData() const {
    static const char *ico_xpm[] = {
            "128 128 355 2",
            "  	c None",
            ". 	c #E7E7DF",
            "+ 	c #E9E9DF",
            "@ 	c #E8E8E0",
            "# 	c #E9E9E0",
            "$ 	c #E2E1D7",
            "% 	c #D9D7CA",
            "& 	c #E2E2D7",
            "* 	c #D8D6C9",
            "= 	c #D7D5CA",
            "- 	c #D8D7CB",
            "; 	c #D8D7C9",
            "> 	c #E5E4DB",
            ", 	c #E0DED3",
            "' 	c #DFDED3",
            ") 	c #E8E8DF",
            "! 	c #E6E5DD",
            "~ 	c #E7E7DE",
            "{ 	c #E0DED6",
            "] 	c #CFC7C1",
            "^ 	c #CEC5BF",
            "/ 	c #DBD6CF",
            "( 	c #DFDCD4",
            "_ 	c #C9BEB9",
            ": 	c #C8BDB8",
            "< 	c #D7D1CB",
            "[ 	c #E2E0D8",
            "} 	c #DDDAD2",
            "| 	c #DEDAD2",
            "1 	c #D2CBC5",
            "2 	c #D1CAC4",
            "3 	c #DFDDD4",
            "4 	c #D6D0C9",
            "5 	c #CBC1BB",
            "6 	c #E3E1D8",
            "7 	c #DDD9D2",
            "8 	c #E3E1D9",
            "9 	c #CBC1BC",
            "0 	c #E7E6DD",
            "a 	c #D0C8C1",
            "b 	c #CAC0BB",
            "c 	c #E4E2DA",
            "d 	c #CFC6C0",
            "e 	c #E1DFD7",
            "f 	c #DEDBD3",
            "g 	c #D7D1CA",
            "h 	c #E6E5DC",
            "i 	c #CBC2BC",
            "j 	c #DCD8D0",
            "k 	c #E0DDD5",
            "l 	c #D4CEC7",
            "m 	c #D0C8C2",
            "n 	c #CEC6C0",
            "o 	c #CCC2BD",
            "p 	c #DFDBD4",
            "q 	c #D0C7C1",
            "r 	c #E5E3DB",
            "s 	c #D9D4CD",
            "t 	c #D1C9C3",
            "u 	c #E8E7DE",
            "v 	c #E8E7DF",
            "w 	c #D2CAC4",
            "x 	c #DCD8D1",
            "y 	c #D5CEC7",
            "z 	c #CDC4BF",
            "A 	c #C8BEB8",
            "B 	c #CDC3BE",
            "C 	c #E5E4DC",
            "D 	c #D8D3CC",
            "E 	c #C9BFB9",
            "F 	c #C8BEB9",
            "G 	c #D4CDC7",
            "H 	c #D3CCC6",
            "I 	c #D6D0CA",
            "J 	c #D3CBC5",
            "K 	c #D8D2CB",
            "L 	c #CDC4BE",
            "M 	c #E3E2D9",
            "N 	c #D7D2CB",
            "O 	c #E2E0D7",
            "P 	c #DDD9D1",
            "Q 	c #E7E6DE",
            "R 	c #D9D3CC",
            "S 	c #CCC3BD",
            "T 	c #D5CEC8",
            "U 	c #E6E6DD",
            "V 	c #CAC0BA",
            "W 	c #D9D4CC",
            "X 	c #D9D5CD",
            "Y 	c #E1DFD6",
            "Z 	c #DBD7D0",
            "` 	c #CCC2BC",
            " .	c #CDC5BF",
            "..	c #DAD6CF",
            "+.	c #E1DED6",
            "@.	c #DCD7D0",
            "#.	c #C9BFBA",
            "$.	c #E4E3DB",
            "%.	c #D6CFC9",
            "&.	c #CCC3BE",
            "*.	c #CABFBA",
            "=.	c #D5CFC9",
            "-.	c #DBD7CF",
            ";.	c #D3CCC5",
            ">.	c #E2DFD7",
            ",.	c #D4CDC6",
            "'.	c #CEC5C0",
            ").	c #DAD6CE",
            "!.	c #DFDCD5",
            "~.	c #E4E3DA",
            "{.	c #DFDBD3",
            "].	c #CFC6C1",
            "^.	c #D5CFC8",
            "/.	c #E8DBC8",
            "(.	c #E8DDCC",
            "_.	c #E59146",
            ":.	c #E58D40",
            "<.	c #E57E25",
            "[.	c #E58028",
            "}.	c #E99247",
            "|.	c #ECA466",
            "1.	c #EEAE77",
            "2.	c #EDA76B",
            "3.	c #EA9B57",
            "4.	c #E78C3D",
            "5.	c #E57F27",
            "6.	c #E88F43",
            "7.	c #E5812B",
            "8.	c #E88E40",
            "9.	c #E6832E",
            "0.	c #E88E41",
            "a.	c #EBA160",
            "b.	c #EEAC74",
            "c.	c #EEAF79",
            "d.	c #EDA96D",
            "e.	c #EA9A54",
            "f.	c #E68735",
            "g.	c #EB9C59",
            "h.	c #F4CBA7",
            "i.	c #FBEFE4",
            "j.	c #FEFBF9",
            "k.	c #FEFEFD",
            "l.	c #FEFCFA",
            "m.	c #FDF7F2",
            "n.	c #FAE9DB",
            "o.	c #F3C59E",
            "p.	c #E68634",
            "q.	c #E68632",
            "r.	c #F5D0B0",
            "s.	c #FBF0E6",
            "t.	c #EFB37F",
            "u.	c #E78A3A",
            "v.	c #F7DAC1",
            "w.	c #FBECE0",
            "x.	c #ECA161",
            "y.	c #EB9D59",
            "z.	c #F3C8A2",
            "A.	c #FBEBDE",
            "B.	c #FDFAF6",
            "C.	c #FEFDFC",
            "D.	c #FEFCFB",
            "E.	c #FDF6F0",
            "F.	c #F8DFCA",
            "G.	c #F0B888",
            "H.	c #E78B3C",
            "I.	c #EDA96F",
            "J.	c #FAE7D7",
            "K.	c #FFFFFF",
            "L.	c #F6D4B6",
            "M.	c #F2C196",
            "N.	c #F5D0AF",
            "O.	c #FDF8F4",
            "P.	c #FAEADB",
            "Q.	c #E88D3F",
            "R.	c #F0B583",
            "S.	c #FEFEFE",
            "T.	c #F7D8BD",
            "U.	c #EA9A55",
            "V.	c #EA9852",
            "W.	c #F9E5D4",
            "X.	c #FCF2EA",
            "Y.	c #F7D9BF",
            "Z.	c #F7DCC4",
            "`.	c #FDF8F3",
            " +	c #EDA86C",
            ".+	c #ECA263",
            "++	c #FDF9F5",
            "@+	c #FAE9DA",
            "#+	c #F1BD90",
            "$+	c #F4CBA8",
            "%+	c #F0B989",
            "&+	c #FEFAF7",
            "*+	c #FBEDE1",
            "=+	c #F7DBC3",
            "-+	c #F6D6BA",
            ";+	c #F8E0CB",
            ">+	c #FDF5EF",
            ",+	c #E57E26",
            "'+	c #F3C49B",
            ")+	c #F6D3B6",
            "!+	c #EB9E5C",
            "~+	c #E6842F",
            "{+	c #E5812A",
            "]+	c #E5822C",
            "^+	c #E78D3F",
            "/+	c #ECA261",
            "(+	c #E58029",
            "_+	c #E78939",
            ":+	c #ECA160",
            "<+	c #F7DAC0",
            "[+	c #EEAC73",
            "}+	c #FCF3EB",
            "|+	c #FDF6F1",
            "1+	c #F1BE92",
            "2+	c #E89146",
            "3+	c #E68531",
            "4+	c #F6D6B9",
            "5+	c #F8E1CD",
            "6+	c #E78837",
            "7+	c #F9E5D3",
            "8+	c #F9E3D1",
            "9+	c #E9944B",
            "0+	c #F1BC8E",
            "a+	c #E9944A",
            "b+	c #FCF1E7",
            "c+	c #FBECDF",
            "d+	c #E88F42",
            "e+	c #F6D7BC",
            "f+	c #FEFDFB",
            "g+	c #F0B787",
            "h+	c #E78C3E",
            "i+	c #E99349",
            "j+	c #E89044",
            "k+	c #FCF0E7",
            "l+	c #F3C69F",
            "m+	c #F7D7BC",
            "n+	c #EEAF78",
            "o+	c #F5CEAD",
            "p+	c #EDA76C",
            "q+	c #F5D2B3",
            "r+	c #E5822D",
            "s+	c #E89045",
            "t+	c #F3C69E",
            "u+	c #FBEEE3",
            "v+	c #E57F26",
            "w+	c #F4C9A4",
            "x+	c #EDAA70",
            "y+	c #E78836",
            "z+	c #F9E2CE",
            "A+	c #F5CFAE",
            "B+	c #EDA86D",
            "C+	c #E78A39",
            "D+	c #FAE6D6",
            "E+	c #FBEEE2",
            "F+	c #E68836",
            "G+	c #F9E4D2",
            "H+	c #E88D3E",
            "I+	c #EFB07B",
            "J+	c #FFFEFE",
            "K+	c #EBA05F",
            "L+	c #F5D1B2",
            "M+	c #E5802A",
            "N+	c #F6D5B9",
            "O+	c #FAEADD",
            "P+	c #F8DFC9",
            "Q+	c #F1BC8F",
            "R+	c #EFB17C",
            "S+	c #F5CDAB",
            "T+	c #E9964F",
            "U+	c #F2C096",
            "V+	c #E9954D",
            "W+	c #E9964E",
            "X+	c #E6832D",
            "Y+	c #FBF0E5",
            "Z+	c #FEFBF8",
            "`+	c #F3C59D",
            " @	c #F1BB8D",
            ".@	c #FAEBDE",
            "+@	c #EFB481",
            "@@	c #F0B887",
            "#@	c #EEB07A",
            "$@	c #F6D4B7",
            "%@	c #ECA465",
            "&@	c #F2C399",
            "*@	c #FAE8D9",
            "=@	c #F5CEAC",
            "-@	c #E68532",
            ";@	c #E9974F",
            ">@	c #F2C298",
            ",@	c #F1BE91",
            "'@	c #FCF5EE",
            ")@	c #EEAE76",
            "!@	c #F3C7A0",
            "~@	c #F9E2CF",
            "{@	c #EA9A56",
            "]@	c #F4CAA6",
            "^@	c #FDF9F6",
            "/@	c #F8DDC6",
            "(@	c #E78938",
            "_@	c #FCF1E8",
            ":@	c #E9964D",
            "<@	c #F5D1B1",
            "[@	c #F0B685",
            "}@	c #F1BF93",
            "|@	c #FDF7F1",
            "1@	c #F9E6D5",
            "2@	c #F6D6BB",
            "3@	c #FBEFE5",
            "4@	c #EBA060",
            "5@	c #EB9F5E",
            "6@	c #F0B786",
            "7@	c #E68430",
            "8@	c #F8DDC7",
            "9@	c #E68633",
            "0@	c #F0B683",
            "a@	c #FCF4ED",
            "b@	c #E78937",
            "c@	c #F6D3B5",
            "d@	c #EA9851",
            "e@	c #F2C094",
            "f@	c #EFB27E",
            "g@	c #E99248",
            "h@	c #F7D8BE",
            "i@	c #F7D9C0",
            "j@	c #FDFAF7",
            "k@	c #F0B98A",
            "l@	c #F1BA8A",
            "m@	c #F2BF93",
            "n@	c #ECA262",
            "o@	c #E89043",
            "p@	c #ECA364",
            "q@	c #EFB17B",
            "r@	c #FAEADC",
            "s@	c #EA9B56",
            "t@	c #F9E3D0",
            "u@	c #F2C39B",
            "v@	c #EEAB72",
            "w@	c #F8DEC8",
            "x@	c #E57F28",
            "y@	c #F4CDAB",
            "z@	c #E68530",
            "A@	c #FAE7D8",
            "B@	c #FAE9D9",
            "C@	c #F9E4D1",
            "D@	c #EB9D5A",
            "E@	c #E68734",
            "F@	c #EEAD75",
            "G@	c #E89145",
            "H@	c #E58026",
            "I@	c #E48E42",
            "J@	c #E48432",
            "K@	c #E48632",
            "L@	c #E47E25",
            "M@	c #E47D24",
            "N@	c #E5822A",
            "                                  . + @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ @ #                                                                                       ",
            "                                + # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # $ %                                                                                   ",
            "                              # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & * %                                                                                 ",
            "                              # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % * %                                                                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % * %                                                                             ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % * %                                                                           ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % * %                                                                         ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % * %                                                                       ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % * %                                                                     ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % * %                                                                   ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % * %                                                                 ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % * %                                                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % * =                                                             ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % * %                                                           ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % * %                                                         ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % * %                                                       ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % * %                                                     ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % -                                                   ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % ;                                                 ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % ;                                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % ;                                             ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % % ;                                           ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % % % ;                                         ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % % % % ;                                       ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % % % % % ;                                     ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % % % % % % -                                   ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # & % % % % % % % % % % % % % % % % % % % % % % % % % =                                 ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # > , ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' ' '                                 ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) ) #                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ! ~ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # { ] ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ ^ / ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ( _ : : : : : : : : : : : : : : : : : : : : : < ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ( _ : : : : : : : : : : : : : : : : : : : : : < ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ( _ : : : : : : : : : : : : : : : : : : : : : < ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # [ } } } } } } } } } } } } | ~ # # # # # # # # # # # # ( _ : : : ] 1 1 1 1 1 1 1 1 1 1 1 1 2 : : : : < ) # # # # # # # # # # # ) 3 } } } } } } } } } } } } ( ) # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : : : : : : : : : 5 6 # # # # # # # # # # # # ( _ : : : 7 ) ) ) ) ) ) ) ) ) ) ) ) 8 9 : : : < ) # # # # # # # # # # # 0 a : : : : : : : : : : : : ] 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : : : : : : : : : b 6 # # # # # # # # # # # # ( _ : : : | # # # # # # # # # # # # c 9 : : : < ) # # # # # # # # # # # 0 ] : : : : : : : : : : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : : : : : : : : : b 6 # # # # # # # # # # # # ( _ : : : | # # # # # # # # # # # # c 9 : : : < ) # # # # # # # # # # # 0 ] : : : : : : : : : : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : _ _ _ _ : : : : b e ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ f _ : : : | # # # # # # # # # # # # c 9 : : : g ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ ~ h ] : : : : _ _ _ _ : : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : i j k k k l : : : : ] m m m m m m m m m m m m n : : : : | # # # # # # # # # # # # c 9 : : : o m m m m m m m m m m m m m _ : : : ] p k k ( q : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : o r # # # s : : : : : : : : : : : : : : : : : : : : : : | # # # # # # # # # # # # c 9 : : : : : : : : : : : : : : : : : : : : : t u # # v w : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : o r # # # s : : : : : : : : : : : : : : : : : : : : : : | # # # # # # # # # # # # c 9 : : : : : : : : : : : : : : : : : : : : : t u # # v w : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : o r # # # s : : : : : : : : : : : : : : : : : : : : : : | # # # # # # # # # # # # c 9 : : : : : : : : : : : : : : : : : : : : : t u # # v w : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : i x k k k y : : : : ] m m m m m m z : : : : : : : : : : | # # # # # # # # # # # # c 9 : : : : : : : : : 9 m m m m m m m _ : : : ] ( k k ( q : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : _ _ _ _ A : : : b e ~ ~ ~ ~ ~ 7 m : : : : : : : : : : | # # # # # # # # # # # # c 9 : : : : : : : : : B s h ~ ~ ~ ~ C ] : : : : _ _ _ _ : : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : : : : : : : : : b 6 # # # h D b : : : : : : E : : : : | # # # # # # # # # # # # c 9 : : : F : : : : : : : G [ # # # 0 ] : : : : : : : : : : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : : : : : : : : : b 6 # # e H : : : : : : b y I _ : : : | # # # # # # # # # # # # c 9 : : : J K L : : : : : : ] } # # 0 ] : : : : : : : : : : : : d 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # ) 4 : : : : : : : : : : : : 5 6 # ( q : : : : : _ G k ) ( _ : : : 7 ) ) ) ) ) ) ) ) ) ) ) ) M 9 : : : < ) 8 N 9 : : : : : i / ) 0 q : : : : : : : : : : : : ] 0 # # # # # # # @                               ",
            "                              @ # # # # # # # # # # O P P P P P P P P P P P P } Q 7 L : : : : : ] x u # # ( _ : : : q H H H H H H H H H H H H w A : : : < ) # # k J : : : : : _ R ) ( P P P P P P P P P P P P ( ) # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # 7 S : : : : : T 6 # # # # ( _ : : : : : : : : : : : : : : : : : : : : : < ) # # # U R 5 : : : : : D ) # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # f L : : : : V W ~ # # # # # ( _ : : : : : : : : : : : : : : : : : : : : : < ) # # # # ) 7 ^ : : : : F X ) # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # Y ] : : : : i Z ) # # # # # # ( _ : : : : : : : : : : : : : : : : : : : : : < ) # # # # # # k m : : : : b j # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # > 1 : : : : ` x # # # # # # # # { n  . . . . . . . . . . . . . . . . . . . . ...) # # # # # # # +.m : : : : L k # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # ) g : : : : b @.# # # # # # # # # ) h h h h h h h h h h h h h h h h h h h h h h ~ # # # # # # # # # { ] : : : : w > # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # 7 #.: : : : s ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # f S : : : : N ) # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # $.m : : : : %.) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / F : : : 5 ( # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # ) D : : : : m c # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) %.: : : : 1 0 # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # [ &.: : : *.} # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 8 d : : : F j # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # ) g : : : : =.) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # -.: : : : t ! # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # 8 S : : : S e # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 0 w : : : F P # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # s : : : : g ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 7 _ : : : ;.~ # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # ! m : : : 9 >.# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # 0 t : : : b e # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # ( #.: : : l ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # / : : : : R ) # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # ) N : : : _ } # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # c S : : : m 0 # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # 0 m : : : z > # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) ,.: : : b [ # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # 6 5 : : : l ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # Z : : : : j # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # } : : : : -.# # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # [ b : : : 4 ) # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # ) D : : : *.e # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ! '.: : : t ~ # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # ) ,.: : : &.> # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) J : : : L C # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # ~ m : : : ] 0 # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) g : : : 5 8 # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # h ^ : : : 1 ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ).: : : #.e # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # > S : : : y ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # P : : : _ !.# # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # ~.o : : : 4 ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # f A : : F {.# # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # ~.o : : : K ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ( F : : A ( # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # ~ l : : 5 f # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ~.] : : ].c # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # c D ^.7 ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # { g I k # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # ) ) # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # ) ) # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              @ # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # # @                               ",
            "                              /.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(.(./.                              ",
            "                              _.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:.:._.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.[.}.|.1.1.2.3.4.5.<.<.<.<.6.6.6.6.7.<.<.<.<.<.<.<.<.<.<.8.6.6.6.9.<.<.<.<.<.<.<.<.<.5.0.a.b.c.d.e.f.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.g.h.i.j.k.k.l.m.n.o.p.<.<.q.r.s.s.i.t.<.<.<.<.<.<.<.<.<.u.v.s.s.w.x.<.<.<.<.<.<.<.<.y.z.A.B.C.k.D.E.F.G.H.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.I.J.K.K.K.K.K.K.K.K.L.9.<.<.<.M.K.K.K.N.[.<.<.<.<.<.<.<.<.a.O.K.K.P.Q.<.<.<.<.<.<.<.R.w.K.K.K.K.K.K.K.K.S.T.U.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.V.W.K.K.K.X.F.Y.Z.P.`. +<.<.<.<..+++K.K.@+H.<.<.<.<.<.<.<.<.#+S.K.K.$+5.<.<.<.<.<.<.%+&+K.K.S.*+=+-+;+>+K.K.@+a.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,+'+K.K.K.)+!+~+{+]+^+/+(+<.<.<.<._+W.K.K.++:+<.<.<.<.<.<.<.9.<+K.K.l.[+<.<.<.<.<.<.2.}+K.K.|+1+2+]+(+3+.+4+5+|.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.6+7+K.K.8+9+<.<.<.<.<.<.<.<.<.<.<.,+z.K.K.S.0+<.<.<.<.<.<.<.a+b+K.K.c+d+<.<.<.<.<.q.e+K.K.f+g+<.<.<.<.<.<.h+i+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.j+k+K.K.l+<.<.<.<.<.<.<.<.<.<.<.<.<.I.j.K.K.m+]+<.<.<.<.<.<.n+f+K.K.o+[.<.<.<.<.<.p+&+K.K.q+r+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.s+b+K.K.t+<.<.<.<.<.<.<.<.<.<.<.<.<.0.A.K.K.u+j+<.<.<.<.<.5.$+K.K.f+n+<.<.<.<.<.v+w+K.K.j.x+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.y+8+K.K.z+i+<.<.<.<.<.<.<.<.<.<.<.<.[.A+K.K.j.B+<.<.<.<.<.C+D+K.K.E+2+<.<.<.<.<.F+G+K.K.A.H+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.1+S.K.K.)+3.<.<.<.<.<.<.<.<.<.<.<.<.I+C.K.J+'+<.<.<.<.<.K+O.K.K.L+M+<.<.<.<.<.i+X.K.K.v.]+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.Q.N+K.K.K.O+#+}.<.<.<.<.<.<.<.<.<.<.a+k+K.K.P+3+<.<.<.<.Q+S.K.C.R+<.<.<.<.<.<.y.O.K.K.S+,+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.T+q+S.K.K.S.P.U+V+<.<.<.<.<.<.<.<.]+-+K.K.}+W+<.<.<.X+Y.K.K.Y+i+<.<.<.<.<.<..+Z+K.K.`+<.<.<.<.<.f.6+6+6+6+6+6+y+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.F+ @.@K.K.K.S.J.+@<.<.<.<.<.<.<.<.@@S.K.C.#@<.<.<.i+k+K.K.$@7.<.<.<.<.<.<.%@j.K.K.&@<.<.<.<.]+z.*@*@*@*@*@*@=@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.;@>@u+K.K.K.f+,@<.<.<.<.<.<.<.e.'@K.K.$+5.<.<.)@f+K.k.+@<.<.<.<.<.<.<.:+&+K.K.!@<.<.<.<.]+v.K.K.K.K.K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.{@]@D.K.K.^@b.<.<.<.<.<.<.3+/@K.K.W.(@<.5.]@K.K._@:@<.<.<.<.<.<.<.e.m.K.K.<@5.<.<.<.7.[@o+o+r.|+K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.[.@@^@K.K.e+9.<.<.<.<.<.<.}@S.K.|@y.<._+1@K.K.2@r+<.<.<.<.<.<.<.6.3@K.K.F.~+<.<.<.<.5.5.5.f.G+K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.,+$+S.K.3@d+<.<.<.<.<.<.4@`.K.S.@@<.5@`.K.S.6@<.<.<.<.<.<.<.<.7@8@K.K.s.}.<.<.<.<.<.<.<.9@G+K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.0@k.K.a@9+<.<.<.<.<.<.b@G+K.K.c@{+0+S.K.}+d@<.<.<.<.<.<.<.<.<.e@S.K.C.f@<.<.<.<.<.<.<.9@G+K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.1+S.K.s.j+<.<.<.<.<.<.,+l+K.K.A.g@h@K.K.i@9.<.<.<.<.<.<.<.<.<.y.a@K.K.v.F+<.<.<.<.<.<.9@G+K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.j+-@<.<.<.<.<.<.0.8@K.K.h@~+<.<.<.<.<.<.<.p+Z+K.j@k@s.K.S.l@<.<.<.<.<.<.<.<.<.<.[.]@K.K.S.m@,+<.<.<.<.<.9@G+K.K.~@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.]+L./@,@n@o@(@4.p@L+K.K.C.q@<.<.<.<.<.<.<.<.Q.r@K.S.*@D.K.'@s@<.<.<.<.<.<.<.<.<.<.<.d@t@K.K.C.u@i+{+[.]+u.v@3@K.K.w@-@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.d+*+K.K.++3@n.c+m.K.K.K.h.9.<.<.<.<.<.<.<.<.x@y@K.K.k.K.K.Z.z@<.<.<.<.<.<.<.<.<.<.<.<. +A@K.K.S.w.Y.$@=+B@++K.K.}++@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.j+=+C.K.K.K.K.K.K.K.m.l+H.<.<.<.<.<.<.<.<.<.<.n+f+K.K.K.S.Q+<.<.<.<.<.<.<.<.<.<.<.<.<.<.a.4+l.K.K.K.K.K.K.K.D.Z.x+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.4.q@A+C@*+k+u+G+w+|.x@<.<.<.<.<.<.<.<.<.<.<.g@z+_@_@_@@+D@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.E@F@A+A@b+X.i.W.=@)@_+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.[.E@Q.o@0.f.5.<.<.<.<.<.<.<.<.<.<.<.<.<.<.o@G@G@G@s+<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.(+(@s+g@d+F+[.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              <.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.                              ",
            "                              H@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.H@                              ",
            "                              I@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.I@                              ",
            "                                J@<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.<.K@                                ",
            "                                  M+L@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@M@L@N@                                  "};

    return ico_xpm;
}

